package io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/**
 * JAVA将流按照读写单位划分为:字节流与字符流
 * InputStream和OutputStream是字节流的超类
 * Reader和Writer是字符流的超类。
 * 这些超类之间没有继承关系，是平级的。
 *
 * 字符流中定义了读写字符的相关read和write方法，使得我们读写的最小单位为字符(char)
 * 注意:字符流仅适合读写文本数据!
 * 字符流底层本质还是读写字节，只是字节与字符的转换字符流会完成。
 *
 * 转换流:
 * InputStreamReader和OutputStreamWriter
 * 常用的一对字符流实现类，它们是一对高级流，实际开发中我们几乎不会直接操作他们，但是、
 * 他们在流连接中是非常重要的一环。
 * 功能:
 * 1:衔接其它字符流与下面的字节流
 * 2:字符与字节的转换由转换流完成
 *
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        //向文件中写入文本数据
        FileOutputStream fos = new FileOutputStream("osw.txt");
        //转化流创建时可以指定字符集，那么写出的字符都会按照该字符集转换为字节
        OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
        /*
        字符输出流提供的write方法是以字符为单位的。并且也提供了直接写出一个字符串的方法
         */

        osw.write("好好学习");
        osw.write("多多睡觉");

        System.out.println("写出完毕！");
        osw.close();

    }
}
